package com.dragon.modules.yuegou.entity.message;

import com.baomidou.mybatisplus.annotation.TableName;
import com.dragon.modules.yuegou.enums.MsgType;
import com.dragon.modules.yuegou.enums.Platform;
import com.dragon.modules.yuegou.enums.message.MessageChannel;
import com.dragon.modules.yuegou.enums.message.MessageFromType;
import com.dragon.modules.yuegou.enums.message.MessageSystemType;
import com.dragon.modules.yuegou.enums.message.MessageToType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.time.LocalDateTime;

/**
 * 消息实体类<br>
 * 对应的表为：msg_message<br>
 *
 * @author pbuilder generated
 * @date 2020-05-16 13:43:59
 * @company sgy
 * @version 2.0
 */
@TableName("msg_message")
@ApiModel(description = "消息")
public class MessageEntity {

	/** 消息ID */
	@ApiModelProperty("消息ID")
	protected String id;

	/** 消息模板ID */
	@ApiModelProperty("消息模板ID")
	protected String templateId;

	/** [全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM */
	@ApiModelProperty("[全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM")
	protected Platform platform;

	/** [枚举]来源类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM */
	@ApiModelProperty("[枚举]来源类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM")
	protected MessageFromType fromType;

	/** 用户/会员ID，由系统发出固定为1 */
	@ApiModelProperty("用户/会员ID，由系统发出固定为1")
	protected String fromUser;

	/** [枚举]目标类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM */
	@ApiModelProperty("[枚举]目标类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM")
	protected MessageToType toType;

	/** 目标用户/会员ID，发给系统固定为1 */
	@ApiModelProperty("目标用户/会员ID，发给系统固定为1")
	protected String toUser;

	/** [枚举]消息通道：0-系统-SYSTEM、1-短信-SMS、2-邮件-EMAIL、3-极光推送-JPUSH、4-微信-WECHAT */
	@ApiModelProperty("[枚举]消息通道：0-系统-SYSTEM、1-短信-SMS、2-邮件-EMAIL、3-极光推送-JPUSH、4-微信-WECHAT")
	protected MessageChannel channel;

	/** [全局枚举]消息类型：0-文本消息-TEXT、1-语音消息-VOICE、2-APP消息-APP、3-HTML消息-HTML */
	@ApiModelProperty("[全局枚举]消息类型：0-文本消息-TEXT、1-语音消息-VOICE、2-APP消息-APP、3-HTML消息-HTML")
	protected MsgType msgType;

	/** [枚举]系统消息类型：0-退款消息-REFUND、1-即将过期提醒-EXPIRED、2-悦卡发放提醒-LSSUE、3-点赞-LIKE、4-关注-ATTENTION */
	@ApiModelProperty("[枚举]系统消息类型：0-退款消息-REFUND、1-即将过期提醒-EXPIRED、2-悦卡发放提醒-LSSUE、3-点赞-LIKE、4-关注-ATTENTION")
	protected MessageSystemType systemType;

	/** 消息标题 */
	@ApiModelProperty("消息标题")
	protected String title;

	/** 消息内容 */
	@ApiModelProperty("消息内容")
	protected String content;

	/** base64音频 */
	@ApiModelProperty("base64音频")
	protected String audioBase64;

	/** 跳转地址 */
	@ApiModelProperty("跳转地址")
	protected String url;

	/** 创建时间 */
	@ApiModelProperty("创建时间")
	protected LocalDateTime createdTime;

	/** 是否已经触达 */
	@ApiModelProperty("是否已经触达")
	protected Boolean reached;

	/** 触达时间 */
	@ApiModelProperty("触达时间")
	protected LocalDateTime reachedTime;

	/** 发送者消息是否删除：0-false-不删除、1-true-删除 */
	@ApiModelProperty("发送者消息是否删除：0-false-不删除、1-true-删除")
	protected Boolean fromDel;

	/** 发送者删除消息时间 */
	@ApiModelProperty("发送者删除消息时间")
	protected LocalDateTime fromDelTime;

	/** 接收者消息是否删除：0-false-不删除、1-true-删除 */
	@ApiModelProperty("接收者消息是否删除：0-false-不删除、1-true-删除")
	protected Boolean toDel;

	/** 接收者删除消息时间 */
	@ApiModelProperty("接收者删除消息时间")
	protected LocalDateTime toDelTime;

	/**
	 * 构造一个空消息实体对象
	 */
	public MessageEntity(){
		super();
	}

	/**
	 * 依据其它对象的信息构造一个消息实体对象
	 *
	 * @param other 其它对象
	 */
	public MessageEntity(MessageEntity other){
		super();
		this.id = other.id;
		this.templateId = other.templateId;
		this.platform = other.platform;
		this.fromType = other.fromType;
		this.fromUser = other.fromUser;
		this.toType = other.toType;
		this.toUser = other.toUser;
		this.channel = other.channel;
		this.msgType = other.msgType;
		this.systemType = other.systemType;
		this.title = other.title;
		this.content = other.content;
		this.audioBase64 = other.audioBase64;
		this.url = other.url;
		this.createdTime = other.createdTime;
		this.reached = other.reached;
		this.reachedTime = other.reachedTime;
		this.fromDel = other.fromDel;
		this.fromDelTime = other.fromDelTime;
		this.toDel = other.toDel;
		this.toDelTime = other.toDelTime;
	}


	/**
	 * 获取消息ID
	 *
	 * @return id 消息ID
	 */
	public String getId() {
		return id;
	}

	/**
	 * 设置消息ID
	 *
	 * @param id 消息ID
	 */
	public void setId(String id) {
		this.id = id;
	}

	/**
	 * 获取消息模板ID
	 *
	 * @return templateId 消息模板ID
	 */
	public String getTemplateId() {
		return templateId;
	}

	/**
	 * 设置消息模板ID
	 *
	 * @param templateId 消息模板ID
	 */
	public void setTemplateId(String templateId) {
		this.templateId = templateId;
	}

	/**
	 * 获取[全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM
	 *
	 * @return platform [全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM
	 */
	public Platform getPlatform() {
		return platform;
	}

	/**
	 * 设置[全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM
	 *
	 * @param platform [全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM
	 */
	public void setPlatform(Platform platform) {
		this.platform = platform;
	}

	/**
	 * 获取[枚举]来源类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM
	 *
	 * @return fromType [枚举]来源类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM
	 */
	public MessageFromType getFromType() {
		return fromType;
	}

	/**
	 * 设置[枚举]来源类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM
	 *
	 * @param fromType [枚举]来源类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM
	 */
	public void setFromType(MessageFromType fromType) {
		this.fromType = fromType;
	}

	/**
	 * 获取用户/会员ID，由系统发出固定为1
	 *
	 * @return fromUser 用户/会员ID，由系统发出固定为1
	 */
	public String getFromUser() {
		return fromUser;
	}

	/**
	 * 设置用户/会员ID，由系统发出固定为1
	 *
	 * @param fromUser 用户/会员ID，由系统发出固定为1
	 */
	public void setFromUser(String fromUser) {
		this.fromUser = fromUser;
	}

	/**
	 * 获取[枚举]目标类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM
	 *
	 * @return toType [枚举]目标类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM
	 */
	public MessageToType getToType() {
		return toType;
	}

	/**
	 * 设置[枚举]目标类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM
	 *
	 * @param toType [枚举]目标类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM
	 */
	public void setToType(MessageToType toType) {
		this.toType = toType;
	}

	/**
	 * 获取目标用户/会员ID，发给系统固定为1
	 *
	 * @return toUser 目标用户/会员ID，发给系统固定为1
	 */
	public String getToUser() {
		return toUser;
	}

	/**
	 * 设置目标用户/会员ID，发给系统固定为1
	 *
	 * @param toUser 目标用户/会员ID，发给系统固定为1
	 */
	public void setToUser(String toUser) {
		this.toUser = toUser;
	}

	/**
	 * 获取[枚举]消息通道：0-系统-SYSTEM、1-短信-SMS、2-邮件-EMAIL、3-极光推送-JPUSH、4-微信-WECHAT
	 *
	 * @return channel [枚举]消息通道：0-系统-SYSTEM、1-短信-SMS、2-邮件-EMAIL、3-极光推送-JPUSH、4-微信-WECHAT
	 */
	public MessageChannel getChannel() {
		return channel;
	}

	/**
	 * 设置[枚举]消息通道：0-系统-SYSTEM、1-短信-SMS、2-邮件-EMAIL、3-极光推送-JPUSH、4-微信-WECHAT
	 *
	 * @param channel [枚举]消息通道：0-系统-SYSTEM、1-短信-SMS、2-邮件-EMAIL、3-极光推送-JPUSH、4-微信-WECHAT
	 */
	public void setChannel(MessageChannel channel) {
		this.channel = channel;
	}

	/**
	 * 获取[全局枚举]消息类型：0-文本消息-TEXT、1-语音消息-VOICE、2-APP消息-APP、3-HTML消息-HTML
	 *
	 * @return msgType [全局枚举]消息类型：0-文本消息-TEXT、1-语音消息-VOICE、2-APP消息-APP、3-HTML消息-HTML
	 */
	public MsgType getMsgType() {
		return msgType;
	}

	/**
	 * 设置[全局枚举]消息类型：0-文本消息-TEXT、1-语音消息-VOICE、2-APP消息-APP、3-HTML消息-HTML
	 *
	 * @param msgType [全局枚举]消息类型：0-文本消息-TEXT、1-语音消息-VOICE、2-APP消息-APP、3-HTML消息-HTML
	 */
	public void setMsgType(MsgType msgType) {
		this.msgType = msgType;
	}

	/**
	 * 获取[枚举]系统消息类型：0-退款消息-REFUND、1-即将过期提醒-EXPIRED、2-悦卡发放提醒-LSSUE、3-点赞-LIKE、4-关注-ATTENTION
	 *
	 * @return systemType [枚举]系统消息类型：0-退款消息-REFUND、1-即将过期提醒-EXPIRED、2-悦卡发放提醒-LSSUE、3-点赞-LIKE、4-关注-ATTENTION
	 */
	public MessageSystemType getSystemType() {
		return systemType;
	}

	/**
	 * 设置[枚举]系统消息类型：0-退款消息-REFUND、1-即将过期提醒-EXPIRED、2-悦卡发放提醒-LSSUE、3-点赞-LIKE、4-关注-ATTENTION
	 *
	 * @param systemType [枚举]系统消息类型：0-退款消息-REFUND、1-即将过期提醒-EXPIRED、2-悦卡发放提醒-LSSUE、3-点赞-LIKE、4-关注-ATTENTION
	 */
	public void setSystemType(MessageSystemType systemType) {
		this.systemType = systemType;
	}

	/**
	 * 获取消息标题
	 *
	 * @return title 消息标题
	 */
	public String getTitle() {
		return title;
	}

	/**
	 * 设置消息标题
	 *
	 * @param title 消息标题
	 */
	public void setTitle(String title) {
		this.title = title;
	}

	/**
	 * 获取消息内容
	 *
	 * @return content 消息内容
	 */
	public String getContent() {
		return content;
	}

	/**
	 * 设置消息内容
	 *
	 * @param content 消息内容
	 */
	public void setContent(String content) {
		this.content = content;
	}

	/**
	 * 获取base64音频
	 *
	 * @return audioBase64 base64音频
	 */
	public String getAudioBase64() {
		return audioBase64;
	}

	/**
	 * 设置base64音频
	 *
	 * @param audioBase64 base64音频
	 */
	public void setAudioBase64(String audioBase64) {
		this.audioBase64 = audioBase64;
	}

	/**
	 * 获取跳转地址
	 *
	 * @return url 跳转地址
	 */
	public String getUrl() {
		return url;
	}

	/**
	 * 设置跳转地址
	 *
	 * @param url 跳转地址
	 */
	public void setUrl(String url) {
		this.url = url;
	}

	/**
	 * 获取创建时间
	 *
	 * @return createdTime 创建时间
	 */
	public LocalDateTime getCreatedTime() {
		return createdTime;
	}

	/**
	 * 设置创建时间
	 *
	 * @param createdTime 创建时间
	 */
	public void setCreatedTime(LocalDateTime createdTime) {
		this.createdTime = createdTime;
	}

	/**
	 * 获取是否已经触达
	 *
	 * @return reached 是否已经触达
	 */
	public Boolean getReached() {
		return reached;
	}

	/**
	 * 设置是否已经触达
	 *
	 * @param reached 是否已经触达
	 */
	public void setReached(Boolean reached) {
		this.reached = reached;
	}

	/**
	 * 获取触达时间
	 *
	 * @return reachedTime 触达时间
	 */
	public LocalDateTime getReachedTime() {
		return reachedTime;
	}

	/**
	 * 设置触达时间
	 *
	 * @param reachedTime 触达时间
	 */
	public void setReachedTime(LocalDateTime reachedTime) {
		this.reachedTime = reachedTime;
	}

	/**
	 * 获取发送者消息是否删除：0-false-不删除、1-true-删除
	 *
	 * @return fromDel 发送者消息是否删除：0-false-不删除、1-true-删除
	 */
	public Boolean getFromDel() {
		return fromDel;
	}

	/**
	 * 设置发送者消息是否删除：0-false-不删除、1-true-删除
	 *
	 * @param fromDel 发送者消息是否删除：0-false-不删除、1-true-删除
	 */
	public void setFromDel(Boolean fromDel) {
		this.fromDel = fromDel;
	}

	/**
	 * 获取发送者删除消息时间
	 *
	 * @return fromDelTime 发送者删除消息时间
	 */
	public LocalDateTime getFromDelTime() {
		return fromDelTime;
	}

	/**
	 * 设置发送者删除消息时间
	 *
	 * @param fromDelTime 发送者删除消息时间
	 */
	public void setFromDelTime(LocalDateTime fromDelTime) {
		this.fromDelTime = fromDelTime;
	}

	/**
	 * 获取接收者消息是否删除：0-false-不删除、1-true-删除
	 *
	 * @return toDel 接收者消息是否删除：0-false-不删除、1-true-删除
	 */
	public Boolean getToDel() {
		return toDel;
	}

	/**
	 * 设置接收者消息是否删除：0-false-不删除、1-true-删除
	 *
	 * @param toDel 接收者消息是否删除：0-false-不删除、1-true-删除
	 */
	public void setToDel(Boolean toDel) {
		this.toDel = toDel;
	}

	/**
	 * 获取接收者删除消息时间
	 *
	 * @return toDelTime 接收者删除消息时间
	 */
	public LocalDateTime getToDelTime() {
		return toDelTime;
	}

	/**
	 * 设置接收者删除消息时间
	 *
	 * @param toDelTime 接收者删除消息时间
	 */
	public void setToDelTime(LocalDateTime toDelTime) {
		this.toDelTime = toDelTime;
	}

	public String toString() {
		return new StringBuilder().append("MessageEntity{").
				append("id=").append(id).
				append(",templateId=").append(templateId).
				append(",platform=").append(platform).
				append(",fromType=").append(fromType).
				append(",fromUser=").append(fromUser).
				append(",toType=").append(toType).
				append(",toUser=").append(toUser).
				append(",channel=").append(channel).
				append(",msgType=").append(msgType).
				append(",systemType=").append(systemType).
				append(",title=").append(title).
				append(",content=").append(content).
				append(",audioBase64=").append(audioBase64).
				append(",url=").append(url).
				append(",createdTime=").append(createdTime).
				append(",reached=").append(reached).
				append(",reachedTime=").append(reachedTime).
				append(",fromDel=").append(fromDel).
				append(",fromDelTime=").append(fromDelTime).
				append(",toDel=").append(toDel).
				append(",toDelTime=").append(toDelTime).
				append('}').toString();
	}

	/**
	 * 复制对象
	 *
	 * @return 复制后的新实体对象
	 */
	public MessageEntity copy() {
		return new MessageEntity(this);
	}

	/** 消息ID */
	public static final String COL_ID = "id";

	/** 消息模板ID */
	public static final String COL_TEMPLATE_ID = "template_id";

	/** [全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM */
	public static final String COL_PLATFORM = "platform";

	/** [枚举]来源类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM */
	public static final String COL_FROM_TYPE = "from_type";

	/** 用户/会员ID，由系统发出固定为1 */
	public static final String COL_FROM_USER = "from_user";

	/** [枚举]目标类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM */
	public static final String COL_TO_TYPE = "to_type";

	/** 目标用户/会员ID，发给系统固定为1 */
	public static final String COL_TO_USER = "to_user";

	/** [枚举]消息通道：0-系统-SYSTEM、1-短信-SMS、2-邮件-EMAIL、3-极光推送-JPUSH、4-微信-WECHAT */
	public static final String COL_CHANNEL = "channel";

	/** [全局枚举]消息类型：0-文本消息-TEXT、1-语音消息-VOICE、2-APP消息-APP、3-HTML消息-HTML */
	public static final String COL_MSG_TYPE = "msg_type";

	/** [枚举]系统消息类型：0-退款消息-REFUND、1-即将过期提醒-EXPIRED、2-悦卡发放提醒-LSSUE、3-点赞-LIKE、4-关注-ATTENTION */
	public static final String COL_SYSTEM_TYPE = "system_type";

	/** 消息标题 */
	public static final String COL_TITLE = "title";

	/** 消息内容 */
	public static final String COL_CONTENT = "content";

	/** base64音频 */
	public static final String COL_AUDIO_BASE64 = "audio_base64";

	/** 跳转地址 */
	public static final String COL_URL = "url";

	/** 创建时间 */
	public static final String COL_CREATED_TIME = "created_time";

	/** 是否已经触达 */
	public static final String COL_REACHED = "reached";

	/** 触达时间 */
	public static final String COL_REACHED_TIME = "reached_time";

	/** 发送者消息是否删除：0-false-不删除、1-true-删除 */
	public static final String COL_FROM_DEL = "from_del";

	/** 发送者删除消息时间 */
	public static final String COL_FROM_DEL_TIME = "from_del_time";

	/** 接收者消息是否删除：0-false-不删除、1-true-删除 */
	public static final String COL_TO_DEL = "to_del";

	/** 接收者删除消息时间 */
	public static final String COL_TO_DEL_TIME = "to_del_time";
}
